/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package asfabdesk.dominio;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * @author Marco Aurélio
 */
@Entity
@Table(name = "PROCESSOS")
public class Processo implements Serializable {

    @Id
    @GeneratedValue
    private long id;
    private String numProcesso;
    private String assunto;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar dataAbertura;
    private boolean coletivo; // processo coletivo ou individual;
    private boolean ativo; // ativo/inativo para deleção

    private enum situacao {

        EM_ANDAMENTO, DEFERIDO, INDEFERIDO, ARQUIVADO
    };

    private enum tipoProcesso {

        ADMINISTRATIVO, JUDICIAL, OUTROS
    };
    @JoinColumn(name = "USUARIOS", referencedColumnName = "id")
    @ManyToOne
    private Usuario usuarioCadastrante; // funcionario ASFAB
    @JoinColumn(name = "ASSOCIADOS", referencedColumnName = "id")
    @ManyToOne
    private Associado associado; // caso seja um processo individual
    @JoinColumn(name = "ITENS_PROCESSO", referencedColumnName = "id")
    @OneToMany
    private List<ItemProcesso> itens = new ArrayList(); // itens de informação sobre o andamento do processo

    public Processo() {
    }

    public Processo(String numProcesso, String assunto, Calendar dataAbertura, boolean coletivo, boolean ativo, Usuario usuarioCadastrante, Associado associado) {
        this.numProcesso = numProcesso;
        this.assunto = assunto;
        this.dataAbertura = dataAbertura;
        this.coletivo = coletivo;
        this.ativo = ativo;
        this.usuarioCadastrante = usuarioCadastrante;
        this.associado = associado;
    }
    


    public Associado getAssociado() {
        return associado;
    }

    public void setAssociado(Associado associado) {
        this.associado = associado;
    }

    public String getAssunto() {
        return assunto;
    }

    public void setAssunto(String assunto) {
        this.assunto = assunto;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public boolean isColetivo() {
        return coletivo;
    }

    public void setColetivo(boolean coletivo) {
        this.coletivo = coletivo;
    }

    public Calendar getDataAbertura() {
        return dataAbertura;
    }

    public void setDataAbertura(Calendar dataAbertura) {
        this.dataAbertura = dataAbertura;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public List<ItemProcesso> getItens() {
        return itens;
    }

    public void setItens(List<ItemProcesso> itens) {
        this.itens = itens;
    }

    public String getNumProcesso() {
        return numProcesso;
    }

    public void setNumProcesso(String numProcesso) {
        this.numProcesso = numProcesso;
    }

    public Usuario getUsuarioCadastrante() {
        return usuarioCadastrante;
    }

    public void setUsuarioCadastrante(Usuario usuarioCadastrante) {
        this.usuarioCadastrante = usuarioCadastrante;
    }
}
